﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using AdministracionCooperativa.entidades;

namespace AdministracionCooperativa.Controlador
{
    public class ControladorUnidad
    {
        public static catuni unidadActual = new catuni();

        public static bool ExisteUnidad(string numUnidad){
            using (combisEntities bd = new combisEntities())
            {
                var resultado = ((bd.catuni.FirstOrDefault(u =>u.NUMUNI==numUnidad)) != null);
                return resultado;
            }
        }
        public static catuni GetUnidadByNumUni(string numUnidad)
        {
            if (ExisteUnidad(numUnidad))
            {
                using (combisEntities bd = new combisEntities())
                {
                    var unidad = bd.catuni.SingleOrDefault(u => u.NUMUNI == numUnidad);
                    return unidad;
                }
            }
            else
                return null;
        }

        public static void EstablecerUnidad(string numUnidad)
        {
            unidadActual = GetUnidadByNumUni(numUnidad);
        }
        public static bool Guardar(catuni unidad)
        {
            if (ExisteUnidad(unidad.NUMUNI))
                return ModificarUnidad(unidad);
            else
                return CrearUnidad(unidad);
        }
        public static void Eliminar(catuni u)
        {
            if (u != null)
                EliminarUnidad(u);
        }
        #region Manejo de la tabla Taller
       
        public static tbltaller EstaEnTaller()
        {
            using (combisEntities bd = new combisEntities())
            {
                return bd.tbltaller.Where(c => c.FECFIN == null && c.CATUNI_NUMUNI == unidadActual.NUMUNI).Select(c=>c).FirstOrDefault();

            }
        }

        public static void GuardarTaller(tbltaller v)
        {
            if (v != null)
            {
                if (EstaEnTaller() != null)
                    ModificarTaller(v);
                else
                    CrearEnTaller(v);
            }
        }
        protected static bool ModificarTaller(tbltaller t)
        {
            using (combisEntities bd = new combisEntities())
            {
                var a = bd.tbltaller.FirstOrDefault(e=>e.CATUNI_NUMUNI==t.CATUNI_NUMUNI && e.FECINI==t.FECINI);
                a.FECFIN = t.FECFIN;
                bd.SaveChanges();
                return true;
            }
        }
        protected static bool CrearEnTaller(tbltaller t)
        {
            using (combisEntities bd = new combisEntities())
            {
                var a = new tbltaller();
                a.CATUNI_NUMUNI = t.CATUNI_NUMUNI;
                a.FECINI = t.FECINI;
                a.FECFIN = null;
                bd.AddTotbltaller(a);
                bd.SaveChanges();
                return false;
            }
        }
        #endregion
        #region Procedimientos para crear, guardar, modificar y eliminar
        protected static bool ModificarUnidad(catuni unidad)
        {
            using (combisEntities bd = new combisEntities())
            {
                var ua = bd.catuni.Where(u=>u.NUMUNI==unidad.NUMUNI).Select(u=>u).FirstOrDefault();
                ua.CATCHO_SEGSOC = unidad.CATCHO_SEGSOC;
                ua.CATCOU_idCOU = unidad.CATCOU_idCOU;
                ua.CATPRO_IDPRO = unidad.CATPRO_IDPRO;
                ua.COSTOPOS = unidad.COSTOPOS;
                ua.PAGPOS = unidad.PAGPOS;
                ua.PAGSOC = unidad.PAGSOC;
                ua.PAGSUB = unidad.PAGSUB;
                ua.POSTURERO = unidad.POSTURERO;
                bd.SaveChanges();
                return true;
            }

        }
        protected static bool CrearUnidad(catuni unidad)
        {
            using (combisEntities bd = new combisEntities())
            {
                var nuevaUnidad = new catuni
                {
                    NUMUNI=unidad.NUMUNI,
                    CATCHO_SEGSOC = unidad.CATCHO_SEGSOC,
                    CATCOU_idCOU = unidad.CATCOU_idCOU,
                    CATPRO_IDPRO = unidad.CATPRO_IDPRO,
                    COSTOPOS = unidad.COSTOPOS,
                    PAGPOS = unidad.PAGPOS,
                    PAGSOC = unidad.PAGSOC,
                    PAGSUB = unidad.PAGSUB,
                    POSTURERO = unidad.POSTURERO,
                };
                bd.catuni.AddObject(nuevaUnidad);
                bd.SaveChanges();
                return true;
            }
        }
        protected static void EliminarUnidad(catuni unidad)
        {
            using (combisEntities bd = new combisEntities())
            {
                var ua = bd.catuni.Where(u => u.NUMUNI == unidad.NUMUNI).Select(u => u).FirstOrDefault();
                bd.catuni.DeleteObject(ua);
                bd.SaveChanges();
            }
        }
        #endregion
    }
}
